8.16 高级表格横向拼接-3(自定义关联)
在使用merge()函数拼接时,还可以将行索引与指定列关联,或者对指定列重新做数据处理后再关联;
1、 两表行索引与列关联
2、 两表的连接健为数组
import pandas as pd
df_l=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.14 高级表格横向拼接-1(按索引关联).xlsx","分数表" , index_col =0)
df_r=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.14 高级表格横向拼接-1(按索引关联).xlsx","信息表" )
print (df_l)
print (df_r)
df=pd.merge(
left =df_l,
right =df_r,
left_index = True , #这一行不加,会提示出错
right_on = "编号" #如果是单个字段名,则不用列表[]
)
print (df)
返回:
姓名 | 部门 | 分数 | |
---|---|---|---|
工号 | |||
NED01 | 张三 | 销售部 | 99 |
NED03 | 王麻子 | IT部 | 97 |
NED05 | 小华 | 销售部 | 96 |
编号 | 姓名 | 部门 | 籍贯 | |
---|---|---|---|---|
0 | NED01 | 张三 | 销售部 | 山东 |
1 | NED02 | 李四 | 财务部 | 四川 |
2 | NED03 | 王麻子 | IT部 | 湖南 |
3 | NED04 | 小曾 | 销售部 | 上海 |
4 | NED05 | 小华 | 销售部 | 北京 |
姓名_x | 部门_x | 分数 | 编号 | 姓名_y | 部门_y | 籍贯 | |
---|---|---|---|---|---|---|---|
0 | 张三 | 销售部 | 99 | NED01 | 张三 | 销售部 | 山东 |
2 | 王麻子 | IT部 | 97 | NED03 | 王麻子 | IT部 | 湖南 |
4 | 小华 | 销售部 | 96 | NED05 | 小华 | 销售部 | 北京 |
import pandas as pd
df_l=pd.read_excel( r"D:\Pyobject2023\object\测试\素材\1.8.14 高级表格横向拼接-1(按索引关联).xlsx","分数表" )
df_r=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\1.8.14 高级表格横向拼接-1(按索引关联).xlsx","信息表" )
print (df_l)
print (df_r)
df=pd.merge(
left =df_l,
right =df_r,
left_on =df_l[ "工号" ].str[-2:],
right_on =df_r[ "编号" ].str[-2:] #不设置索引,使用提取的编号作来关健字段关联
)
print (df)
返回:
工号 | 姓名 | 部门 | 分数 | |
---|---|---|---|---|
0 | NED01 | 张三 | 销售部 | 99 |
1 | NED03 | 王麻子 | IT部 | 97 |
2 | NED05 | 小华 | 销售部 | 96 |
编号 | 姓名 | 部门 | 籍贯 | |
---|---|---|---|---|
0 | NED01 | 张三 | 销售部 | 山东 |
1 | NED02 | 李四 | 财务部 | 四川 |
2 | NED03 | 王麻子 | IT部 | 湖南 |
3 | NED04 | 小曾 | 销售部 | 上海 |
4 | NED05 | 小华 | 销售部 | 北京 |
key_0 | 工号 | 姓名_x | 部门_x | 分数 | 编号 | 姓名_y | 部门_y | 籍贯 | |
---|---|---|---|---|---|---|---|---|---|
0 | 01 | NED01 | 张三 | 销售部 | 99 | NED01 | 张三 | 销售部 | 山东 |
1 | 03 | NED03 | 王麻子 | IT部 | 97 | NED03 | 王麻子 | IT部 | 湖南 |
2 | 05 | NED05 | 小华 | 销售部 | 96 | NED05 | 小华 | 销售部 | 北京 |